package mx.ipn.presentacion;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.presentacion.ui.Ui_VentanaInicio2;
import mx.ipn.presentacion.empleado.EmpleadoPrincipal;
import mx.ipn.presentacion.facturacion.FacturaP; //import mx.ipn.presentacion.nomina.Principal;
import mx.ipn.presentacion.reportes.ComportamientoPropiedadesReporte;
import mx.ipn.presentacion.telefonista.TelefonistaPrincipal;
import mx.ipn.presentacion.radioperadora.OperadoraPrincipal;

//import mx.ipn.presentacion.ui.Ui_VentanaInicio;
import com.trolltech.qt.gui.*;
import mx.ipn.to.*;

import java.util.Date;

public class VentanaInicio extends QMainWindow {
	Ui_VentanaInicio2 ui = new Ui_VentanaInicio2();
	Login login = null;
	UsuarioTO user;

	TelefonistaPrincipal ventanaTelefonista = null;
	FacturaP ventanaFactura = null;
	EmpleadoPrincipal ventanaEmpleado = null;
	OperadoraPrincipal ventanaOperadora = null;
	mx.ipn.presentacion.nomina.Principal nomina = null;
	ComportamientoPropiedadesReporte ventanaReportes = null;
	FabricaDeDAOs fabrica = FabricaDeDAOs.getFabricaDeDAOs(1);

	VentanaInicio(UsuarioTO resp, Login login) {
		ui.setupUi(this);
		this.login = login;
		login.ui.lineEditContrasenia.clear();

		ui.action_Cerrar_sesion.triggered.connect(this, "cerrar(boolean)");
		ui.action_Salir.triggered.connect(this, "salir(boolean)");

		if (resp.getGrupoUsuarioTO().getNombre().equals("administrador")) {
			ui.pushButtonEmpl.setVisible(true);
			ui.pushButtonFactu.setVisible(true);
			ui.pushButtonRep.setVisible(true);
			ui.pushButtonNom.setVisible(true);
			ui.pushButtonTel.setVisible(false);
			ui.pushButtonOper.setVisible(false);

			ui.labelEmpl.setVisible(true);
			ui.labelFact.setVisible(true);
			ui.labelRepo.setVisible(true);
			ui.labelNomi.setVisible(true);
			ui.labelTel.setVisible(false);
			ui.labelOper.setVisible(false);

		} else if (resp.getGrupoUsuarioTO().getNombre().equals("supervisor")) {
			ui.pushButtonEmpl.setVisible(true);
			ui.pushButtonFactu.setVisible(true);
			ui.pushButtonRep.setVisible(true);
			ui.pushButtonNom.setVisible(false);
			ui.pushButtonTel.setVisible(false);
			ui.pushButtonOper.setVisible(false);

			ui.labelEmpl.setVisible(true);
			ui.labelFact.setVisible(true);
			ui.labelRepo.setVisible(true);
			ui.labelNomi.setVisible(false);
			ui.labelTel.setVisible(false);
			ui.labelOper.setVisible(false);
		} else if (resp.getGrupoUsuarioTO().getNombre().equals(
				"radio-operadora")) {
			ui.pushButtonEmpl.setVisible(true);
			ui.pushButtonFactu.setVisible(false);
			ui.pushButtonRep.setVisible(true);
			ui.pushButtonNom.setVisible(false);
			ui.pushButtonTel.setVisible(false);
			ui.pushButtonOper.setVisible(true);

			ui.labelEmpl.setVisible(true);
			ui.labelFact.setVisible(false);
			ui.labelRepo.setVisible(true);
			ui.labelNomi.setVisible(false);
			ui.labelTel.setVisible(false);
			ui.labelOper.setVisible(true);
		} else if (resp.getGrupoUsuarioTO().getNombre().equals("telefonista")) {
			ui.pushButtonEmpl.setVisible(true);
			ui.pushButtonFactu.setVisible(false);
			ui.pushButtonRep.setVisible(true);
			ui.pushButtonNom.setVisible(false);
			ui.pushButtonTel.setVisible(true);
			ui.pushButtonOper.setVisible(false);

			ui.labelEmpl.setVisible(true);
			ui.labelFact.setVisible(false);
			ui.labelRepo.setVisible(true);
			ui.labelNomi.setVisible(false);
			ui.labelTel.setVisible(true);
			ui.labelOper.setVisible(false);
		}

		user = resp;
	}

	VentanaInicio(QWidget parent) {
		ui.setupUi(this);
	}

	public void on_pushButtonTel_clicked() {
		if (ventanaTelefonista == null)
			ventanaTelefonista = new TelefonistaPrincipal(user);
		ventanaTelefonista.show();
	}

	public void on_pushButtonFactu_clicked() {
		if (ventanaFactura == null)
			ventanaFactura = new FacturaP();
		ventanaFactura.show();
	}

	public void on_pushButtonEmpl_clicked() {
		if (ventanaEmpleado == null)
			ventanaEmpleado = new EmpleadoPrincipal(user,this);
		ventanaEmpleado.show();
		this.setEnabled(false);
	}

	public void on_pushButtonOper_clicked() {
		if (ventanaOperadora == null)
			ventanaOperadora = new OperadoraPrincipal(user);
		ventanaOperadora.show();
	}

	public void on_pushButtonRep_clicked() {
		if (ventanaReportes == null)
			ventanaReportes = new ComportamientoPropiedadesReporte(user,this);
		ventanaReportes.show();
		this.setEnabled(false);
	}

	public void on_pushButtonNom_clicked() {
		if (nomina == null)
			nomina = new mx.ipn.presentacion.nomina.Principal();
	}

	public void salir(boolean bandera) {
		System.out.println("salir");
	}

	public void cerrar(boolean bandera) {
		System.out.println("cerrar");
		login.setHidden(false);
		this.close();
		
		
	}

	protected void closeEvent(QCloseEvent e) {
		registrarBaja();

	}
	
	public void registrarBaja(){
		BitacoraAccesoTO bAccesoTO = new BitacoraAccesoTO();
		MotivoTO motivoTO = fabrica
				.getMotivoDAO()
				.findMotivoByNombreTipoMotivo("fin de sesion", (short) 1);

		bAccesoTO.setFecha(new Date());
		bAccesoTO.setIdMotivo(motivoTO.getIdMotivo());

		Date fecha = FechaHoraTO.getFecha(new Date());
		fecha = FechaHoraTO.getFecha(fecha.toString());
		Date fechaHora = new Date();
		
		Date dif = new Date(fechaHora.getTime() - fecha.getTime() + FechaHoraTO.getFechaUtil("1970/01/01").getTime());
		
		bAccesoTO.setHora(dif);
		bAccesoTO.setIdUsuario(user.getIdUsuario());

		fabrica.getBitacoraAccesoDAO().insertBitacoraAcceso(bAccesoTO);
	}
}
